package com.gt.service.user;

import com.gt.dao.user.UserDAO;
import com.gt.entity.user.User;
import com.gt.service.base.BaseServiceImpl;

import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 用户业务接口实现类
 * @author why
 */
@Service("userService")
public class UserServiceImpl extends BaseServiceImpl implements UserService {

	// Fields

	@Autowired
	private UserDAO userDAO;// 用户DAO接口

	// Methods

   /**
	* 添加用户
	*  id 主键值
	*  userName 用户名称
	*  email 用户邮箱
	*  password 用户密码
	*  teamName 团队名称
	*  createTime 创建时间
	*  updateTime 修改时间
	*  lastLoginTime 最后登录时间
	*  state 用户状态1：启用  2：禁用
	* @return Long id 添加后的数据库主键值
	*/
	@Override
	public Long add(User user) {
		// 构造用户参数实体
		this.userDAO.insert(user);
		return user.getId();
	}

   /**
	* 删除用户
	*  id 主键值
	*/
	@Override
	public void delete(Long id) {
		// 调用用户DAO接口
		this.userDAO.delete(id);
	}

   /**
	* 更新用户
	*  id 主键值
	*  userName 用户名称
	*  email 用户邮箱
	*  password 用户密码
	*  teamName 团队名称
	*  createTime 创建时间
	*  updateTime 修改时间
	*  lastLoginTime 最后登录时间
	*  state 用户状态1：启用  2：禁用
	*/
	@Override
	public void edit(User user) {
		// 调用用户DAO接口
		this.userDAO.update(user);
	}

   /**
	* 主键查询用户
	*  id 主键值
	* @return User 实体
	*/
	@Override
	public User queryById(Long id) {
		// 调用用户DAO接口
		return this.userDAO.selectById(id);
	}

   /**
	* 根据条件查询用户列表
	*  id 主键值
	*  userName 用户名称
	*  email 用户邮箱
	*  password 用户密码
	*  teamName 团队名称
	*  createTime 创建时间
	*  updateTime 修改时间
	*  lastLoginTime 最后登录时间
	*  state 用户状态1：启用  2：禁用
	* @return List<User> 实体List
	*/
	@Override
	public List<User> queryList(User user) {
			// 调用用户DAO接口
		return this.userDAO.selectList(user);
	}

	/**
	 * 根据apikey获取用户信息
	 * @param apiKey
	 * @return
	 */
	@Override
	public User querySelectUserByApikey(String apiKey){
		HashMap params = new HashMap();
		params.put("apiKey", apiKey);
		return this.userDAO.selectUserByApikey(params);
	}

}